; Gandalf Series 24                                    Version 1.00 10-Jan-1992
; (c) 1990/1991 Hugo Fiennes

modem_initialise ()
  {
  return(1)
  }

modem_shutdown ()
  {
  return(1)
  }

modem_connect ()
  {
  return(_processmessage(""))
  }

modem_disconnect ()
  {
  port_rts(0)
  port_dtr(0)
  pause 50
  port_dtr(1)
  port_rts(1)
  }

modem_dial (string number[40],integer how)
  {
  string dialtype[1]
  integer mode=0

  port_rts(0)
  port_dtr(0)
  pause 50
  port_dtr(1)
  port_rts(1)
  pause 50

  port_rxclear()

  if (how==0)
    {
    dialtype="P"
    }
  else
    {
    dialtype="T"
    }

  type dialtype+number+cr

  return(_processmessage(""))
  }

modem_errorcontrol (string option[10])
  {
  set(linklevel,none)

  if (comparei($left(option,3),"mnp"))
    {
    set(linklevel,mnp)
    }

  if (comparei(option,"vasscom"))
    {
    set(linklevel,vasscom)
    }
  }

modem_answer ()
  {  
  return(1)
  }

modem_standard (string option[10])
  {
  if (comparei(option,"v22bis"))
    {
    port_txspeed(2400)
    port_rxspeed(2400)
    return
    }
  prints "Modem standard "+option+" is not supported."+newline
  }

_processmessage (string already[30])
  {
  integer start=time()

  while((time()-start)<modem_carrierwait)
    {
    if (port_dcd()!=0)
      {
      integer gc=time()

      ; Wait for 2 seconds constant carrier
      while((time()-gc)<200 && port_dcd()!=0)
        {
        pause(5)
        }

      if (port_dcd())
        {
        return(0)
        }
      }
    else
      {
      pause(5)
      }
    }

  modem_disconnect()
  return(1)
  }
